import pandas as pd
import yaml

from yaml import SafeLoader

from datareport.api.DataSource import DataSource
from datareport.impl.paragraph.base.BaseParagraph import BaseParagraph
from datareport.api.annotation.Style import style


@style()
class KaiZhanQingKuang_pingci_zhengti_39(BaseParagraph):
    """
    组织生活开展频次-整体情况
    """
    decrease=40

    def __init__(self):
        super().__init__()
        self.text = '''1 、 整 体 情 况 ： 根 据 统 计 ，\
本 年 度 基 层 党 支 部 共 开 展 党 课 {}场 次 ， 平 均 {}场 次 / 支 部 ；\
开 展 党 员 大 会 {} 场 次 ， 平 均{}场 次 / 支 部 ；\
开 展 支 委 会 {}场 次 ， 平 均{} 场 次 / 支 部 ；\
开 展 其 他 组 织 生 活 {}场 次 ， 平 均 {}场 次 / 支 部 。\
'''
        self.sort = 29
        self.section = 9

    def plot(self, df, plt):
        pass

    def getData(self, result):
        pass

    def start(self, conn, year, plt):
        self.text=self.text.replace(' ','')
        df=pd.read_sql('''
        select (select name from t_podict d where d.value=t_meetingplan.type)type,partyBranchName,1 num from t_meetingplan
        where year(createTime)={} 
        and activityId in (select activityId from t_meetingrecord)
        '''.format(year),con=conn)
        types_df=pd.read_sql('''select name from t_podict where type=\'type\' ''',con=conn)
        type_list=types_df['name'].values.tolist()
        sum_values=[]
        avg_values=[]
        for t in type_list:
            sum_values.append(len(df[df['type']==t]))
            if len(df[df['type']==t])==0:
                avg_values.append(0)
            else:
                avg_values.append(round(len(df[df['type']==t])/len(df[df['type']==t]['partyBranchName'].drop_duplicates()),1))
        self.text=self.text.format(sum_values[type_list.index('党课')],
                                   avg_values[type_list.index('党课')],
                                   sum_values[type_list.index('党员大会')],
                                   avg_values[type_list.index('党员大会')],
                                   sum_values[type_list.index('支委会')],
                                   avg_values[type_list.index('支委会')],
                         len(df[df['type'].isin(['党课','党员大会','支委会'])==False]),
                         round(len(df[df['type'].isin(['党课','党员大会','支委会'])==False]) / len(
                             df[df['type'].isin(['党课','党员大会','支委会'])==False]['partyBranchName'].drop_duplicates()),1)
                         )
        self.table=pd.DataFrame(columns=['类型','组织生活年度累计场次','支部均值','基本要求'])
        self.table['类型']=type_list
        self.table['组织生活年度累计场次']=sum_values
        self.table['支部均值']=avg_values
        self.table['基本要求']=['每季度一次','每季度一次','设置支委会的，每月一次','设置党小组的，每月一次','根据实际开展']
        self.tables.append(self.table.append({'类型':'合计',"组织生活年度累计场次":sum(sum_values),"支部均值":sum(avg_values),"基本要求":'/'},ignore_index=True))
        self.tables.append(pd.read_sql('''select partyBranchName '基层党支部',startTime '主题党日开展时间' from t_meetinginfo where type=1005''',con=conn))
if __name__ == '__main__':
    with open('D:\work\sanhuiyike\datareport\config.yaml', encoding='utf-8') as f:
        data = yaml.load(f, Loader=SafeLoader)
    con=DataSource(data['datasource']).conn
    KaiZhanQingKuang_pingci_zhengti_39().start(con,2023,'')
